using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Gencode.PrsCommon.Data.Abteilung;

namespace Personalplaner
{
    public partial class AddAbteilungToSchemaDlg : Form// UserControl, Gencode.Gengui.Forms.IDialogControl
    {
		DataView m_abteilungzugewiesen;
		DataView m_abteilungnichtzugewiesen;

        public AddAbteilungToSchemaDlg()
        {
            InitializeComponent();
            SetListAbteilung();
        }

        public DataView Abteilungen
        {
            get
            {
                return m_abteilungzugewiesen;
            }
        }

        private void SetListAbteilung()
        {
			m_abteilungnichtzugewiesen = AbteilungData.GetAbteilungen(Verwaltung.Mandant);
			listAbteilung.DataSource = m_abteilungnichtzugewiesen;
			listAbteilung.DisplayMember = "name";

			DataTable table = new DataTable();
			table.Columns.Add("abteilungid");
			table.Columns.Add("name");
			table.Columns.Add("einsatzprotag");
			m_abteilungzugewiesen = new DataView(table);

			listAbteilungAdded.DataSource = m_abteilungzugewiesen;
			listAbteilungAdded.DisplayMember = "name";
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (listAbteilung.SelectedIndex >= 0)
            {
				DataRow row = m_abteilungzugewiesen.Table.NewRow();
				row[0] = m_abteilungnichtzugewiesen[listAbteilung.SelectedIndex].Row[0].ToString();
				row[1] = m_abteilungnichtzugewiesen[listAbteilung.SelectedIndex].Row[1].ToString();
				row[2] = m_abteilungnichtzugewiesen[listAbteilung.SelectedIndex].Row[2].ToString();

				m_abteilungzugewiesen.Table.Rows.Add(row);
				m_abteilungnichtzugewiesen.Table.Rows.RemoveAt(listAbteilung.SelectedIndex);
            }
        }

        private void btnRemove_Click(object sender, EventArgs e)
        {
            if (listAbteilungAdded.SelectedIndex >= 0)
            {
				DataRow row = m_abteilungnichtzugewiesen.Table.NewRow();
				row[0] = m_abteilungzugewiesen[listAbteilungAdded.SelectedIndex].Row[0].ToString();
				row[1] = m_abteilungzugewiesen[listAbteilungAdded.SelectedIndex].Row[1].ToString();
				row[2] = m_abteilungzugewiesen[listAbteilungAdded.SelectedIndex].Row[2].ToString();

				m_abteilungnichtzugewiesen.Table.Rows.Add(row);
				m_abteilungzugewiesen.Table.Rows.RemoveAt(listAbteilungAdded.SelectedIndex);
            }
        }

        private void btnUp_Click(object sender, EventArgs e)
        {
            if (listAbteilungAdded.SelectedIndex > 0)
            {
				//Index changes after removing line
				int index = listAbteilungAdded.SelectedIndex;

				DataRow row = m_abteilungzugewiesen.Table.NewRow();
				object[] arr = m_abteilungzugewiesen.Table.Rows[index].ItemArray;
				row.ItemArray = arr;

				m_abteilungzugewiesen.Table.Rows.RemoveAt(index);
				m_abteilungzugewiesen.Table.Rows.InsertAt(row, index - 1);
            }
        }

        private void btnDown_Click(object sender, EventArgs e)
        {
            if (listAbteilungAdded.SelectedIndex <= (listAbteilungAdded.Items.Count - 2))
            {
				//Index changes after removing line
				int index = listAbteilungAdded.SelectedIndex;

				DataRow row = m_abteilungzugewiesen.Table.NewRow();
				object[] arr = m_abteilungzugewiesen.Table.Rows[index].ItemArray;
				row.ItemArray = arr;

				m_abteilungzugewiesen.Table.Rows.RemoveAt(index);
				m_abteilungzugewiesen.Table.Rows.InsertAt(row, index + 1);
            }
        }



		//#region IDialogControl Members

		//public bool OKClicked()
		//{
		//    return true;
		//}

		//public bool CancleClicked()
		//{
		//    return true;
		//}

		//#endregion

		private void btnCancle_Click(object sender, EventArgs e)
		{
			DialogResult = DialogResult.Cancel;
			this.Close();
		}

		private void btnOK_Click(object sender, EventArgs e)
		{
			DialogResult = DialogResult.OK;
			this.Close();
		}
	}
}